home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MYUTIL / READS < prev    next >
Encoding:
Text File  |  1989-09-03  |  2.0 KB  |  101 lines

  1.  
  2. (*
  3.  
  4.   (*$L+ ab hier alles LINK ON!*)
  5.  
  6. VAR buffer: ARRAY [0..257] OF CHAR;
  7.     start, end: CARDINAL;
  8.  
  9. PROCEDURE readBuffer;
  10.   VAR p: CARDINAL;
  11.   BEGIN
  12.     ASSEMBLER
  13.         MOVE.L  #buffer,(A3)+
  14.         MOVE    IOConfig.LengthOfBufferedLine,D0
  15.         CMPI    #255,D0
  16.         BLS     lok
  17.         MOVE    #255,D0
  18.       lok:
  19.         MOVE    D0,(A3)+
  20.         JSR     ReadLine
  21.     END;
  22.     IF Done THEN
  23.       p:= Strings.Length(buffer);
  24.       buffer[p]:= CHR(13);
  25.       INC(p);
  26.       buffer[p]:= CHR(0);
  27.     ELSE
  28.       p:= 0
  29.     END;
  30.     end:= p; start:= 0;
  31.   END readBuffer;
  32.  
  33. PROCEDURE skipSep;
  34.   BEGIN
  35.     WHILE (start < end) AND (buffer[start] IN IOConfig.Separators) DO INC(start) END
  36.   END skipSep;
  37.  
  38. PROCEDURE ReadLn;
  39.   BEGIN
  40.     start:= end;
  41.     Done:= TRUE
  42.   END ReadLn;
  43.  
  44. PROCEDURE ReadToken (VAR s: ARRAY OF CHAR);
  45.   VAR i: CARDINAL;
  46.   BEGIN
  47.     REPEAT
  48.       (*!!! hier keinen Puffer sondern direkte Eingabe!*)
  49.       IF start >= end THEN readBuffer END;
  50.       IF NOT Done THEN RETURN END;
  51.       skipSep;
  52.       i:= 0;
  53.       WHILE (start<end)
  54.       AND (i<=HIGH (s))
  55.       AND NOT (buffer[start] IN IOConfig.Separators) DO
  56.         s[i]:= buffer[start];
  57.         INC(start);
  58.         INC(i);
  59.       END;
  60.       IF i <= HIGH (s) THEN s[i]:= CHR(0); END;
  61.     UNTIL s[0] # CHR(0);
  62.   END ReadToken;
  63.  
  64. PROCEDURE ReadBufChar (VAR ch: CHAR);
  65.   BEGIN
  66.     IF start >= end THEN readBuffer END;
  67.     IF Done THEN
  68.       ch:= buffer [start];
  69.       INC (start);
  70.     ELSE
  71.       ch:= 0C
  72.     END;
  73.   END ReadBufChar;
  74.  
  75.  
  76. PROCEDURE EndOfRead(skip: BOOLEAN): BOOLEAN;
  77.   BEGIN
  78.     IF IOConfig.ReadStringByLine THEN
  79.       RETURN TRUE
  80.     ELSE
  81.       IF skip THEN
  82.         skipSep;
  83.       END;
  84.       RETURN start = end
  85.     END
  86.   END EndOfRead;
  87.  
  88. PROCEDURE ReadAgain (VAR ch: CHAR);
  89.   BEGIN
  90.     IF IOConfig.ReadStringByLine THEN
  91.       HALT; (*!!!readLast:= TRUE;*)
  92.       Done:= TRUE
  93.     ELSE
  94.       Done:= start > 0;
  95.       IF Done THEN
  96.         DEC (start)
  97.       END
  98.     END
  99.   END ReadAgain;
  100. *)
  101.